Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO ■PCMCIA Socket Service Overview of PCMCIA o Compatible with the PCMCIA Socket Service (INT 1Ah - Function 80-AFh) of IBM-PC/AT compatible machines. o On the PC-9801P/NX/C/NS/A/NL/R and PC-9821Ne, the socket service provided by SSDRV.SYS is fixed at adapter number 00h and socket number 01h. u When SSDRV.SYS (NEC's PCMCIA Socket Service 2.00 Driver Rev 1.00) is installed, if the AH register range is not within the range of 80-AFh, the program jumps to the routine that handled INT 1Ah before SSDRV.SYS, but the flags (OF, SF, ZF, AF, PF, CF) are destroyed. PCMCIA Socket Service 2.00 Driver Rev 1.01 does not destroy them. In SSDRV.SYS (NEC's PCMCIA Socket Service 2.00 Driver Rev 1.00), all flags (OF, SF, ZF, AF, PF) except for the CY flag, which indicates the success/failure of the function, are destroyed. In PCMCIA Socket Service 2.00 Driver Rev 1.01, all flags except the CY flag do not change. SSDRV.SYS also hooks INT 1Fh - Function CFh. Table Return Code List -------------+---------------+--------------------------------------- Return Code | Name | Meaning -------------+---------------+--------------------------------------- AH=00h(CF=0) | SUCCESS | The request was successful AH=01h(CF=1) | BAD_ADAPTER | The adapter number is invalid AH=02h(CF=1) | BAD_ATTRIBUTE | The attribute information is invalid AH=03h(CF=1) | BAD_BASE | The base address is invalid AH=04h(CF=1) | BAD_EDC | The EDC generator number is invalid AH=06h(CF=1) | BAD_IRQ | The IRQ level is invalid AH=07h(CF=1) | BAD_OFFSET | The card address is invalid AH=08h(CF=1) | BAD_PAGE | The page number is invalid AH=09h(CF=1) | READ_FAILURE | Read request did not complete AH=0Ah(CF=1) | BAD_SIZE | Size is invalid AH=0Bh(CF=1) | BAD_SOCKET | Socket number is invalid AH=0Dh(CF=1) | BAD_TYPE | Window or interface type is invalid AH=0Eh(CF=1) | BAD_VCC | Vcc voltage index specified is invalid AH=0Fh(CF=1) | BAD_VPP | Vpp1/Vpp2 voltage index specified is invalid AH=11h(CF=1) | BAD_WINDOW | Window number is invalid AH=12h(CF=1) | WRITE_FAILURE | Write request did not complete AH=14h(CF=1) | NO_CARD | Card not inserted AH=15h(CF=1) | BAD_FUNCTION | Socket service not supported AH=16h(CF=1) | BAD_MODE | Specified processor mode not supported AH=17h(CF=1) | BAD_SPEED | Specified speed not available AH=18h(CF=1) | BUSY | Not accepted at this time -------------+---------------+--------------------------------------- INT 1Ah - Function 80h Classification PCMCIA Socket Service Name GetAdapterCount Target PC card slot equipped machine + SSDRV.SYS Input AH=80h Output ■When PCMCIA Socket Service is installed AH=00h(CF=0) AL=TotalAdapters(total number of adapters) CX=5353h(Signature) *When Signature=5353h('SS'), at least one socket service exists in the system. ■Undefined when PCMCIA Socket Service is not installed Explanation o Used to check whether the socket service is available. When PCMCIA Socket Service is installed, AL returns the total number of adapters supported by all socket services in the host system. o It is recommended to call with CX ≠ 5353h ('SS') and check that Signature is returned as 'SS'. Related INT 1Ah - Function 81h, 82h Classification PCMCIA Socket Service Name Reserve Target PC card slot equipped machine + SSDRV.SYS Input AH=81h, 82h Output AH=15h (CF=1): BAD_FUNCTION Explanation o None Related INT 1Ah - Function 83h Classification PCMCIA Socket Service Name GetSSInfo Target PC card slot equipped machine + SSDRV.SYS Input AH=83h AL=Adapter (adapter number) Output AH (CF) = return code (see "Return Code List") AL=0 BX=Compliance (BCD value of the socket service compliance level) CH=NumAdapters (number of adapters supported by this socket service) CL=FirstAdapters (first adapter number supported by this socket service) Explanation o Gets the compliance level of the socket service for the specified adapter number. Also gets the number of adapters supported by the socket service. Related INT 1Ah - Function 84h Classification PCMCIA Socket Service Name InquireAdapter Target PC card slot equipped machine + SSDRV.SYS Input AH=84h AL=Adapter (adapter number) ES:DI=pBuffer (pointer to adapter function table and power entry table) Output AH(CF)=return code (see "Return Code List") BH=NumWindows (number of windows provided by adapter) BL=NumSockets (number of sockets provided by adapter) CX=NumEDCs (number of EDC generators provided by adapter) Explanation o Obtains information about the functions of the specified adapter. Related INT 1Ah - Function 85h INT 1Ah - Function 86h INT 1Ah - Function 85h Classification PCMCIA Socket Service Name GetAdapter Target PC card slot equipped machine + SSDRV.SYS Input AH=85h AL=Adapter (adapter number) Output AH(CF)=Return code (see "Return code list") DH=AdapterState (adapter state) bit 1: AS_MAINTAIN 1 = Adapter and socket state information is maintained when adapter is in low power consumption mode 0 = Adapter and socket state information is not maintained when adapter is in low power consumption mode bit 0: AS_POWERDOWN 1 = Adapter is in low power consumption mode 0 = Power is requested and adapter is functional DI=SCRouting bit 7: IRQ_ENABLED 1 = Enable 0 = Disable bit 6: IRQ_HIGH 1 = Active HIGH 0 = Active LOW Bits 4-0: IRQ level Description o Returns the current state of the specified adapter. Related INT 1Ah - Function 84h INT 1Ah - Function 86h INT 1Ah - Function 86h Classification PCMCIA Socket Service Name SetAdapter Target PC card slot equipped machine + SSDRV.SYS Input AH=86h AL=Adapter (adapter number) DH=State (adapter state) bit 1: AS_MAINTAIN 1 = Adapter and socket state information is maintained when adapter is in low power consumption mode 0 = Adapter and socket state information is not maintained when adapter is in low power consumption mode bit 0: AS_POWERDOWN 1 = Adapter is in low power consumption mode 0 = Power is required and adapter is functional DI=SCRouting (status change interrupt setting) bit 7: IRQ_ENABLED 1 = Enable 0 = Disable bit 6: IRQ_HIGH 1 = Active HIGH 0 = Active LOW bit 4-0: IRQ level Output AH(CF)=Return code (see "List of return codes") Explanation o Makes settings for the specified adapter. Related INT 1Ah - Function 84h INT 1Ah - Function 85h INT 1Ah - Function 87h Classification PCMCIA Socket Service Name InquireWindow Target PC card slot equipped machine + SSDRV.SYS Input AH=87h AL=Adapter (adapter number) BH=Window (window number on adapter) ES:DI=pBuffer (pointer to window function table) Output AH(CF)=return code (see "Return Code List") BL=WndCaps bit 7: WC_WAIT 1 = PC card WAIT signal can be used to generate wait 0 = PC card WAIT signal cannot be used to generate wait bit 2: WC_IO 1 = PC card I/O port can be mapped to I/O space 0 = PC card I/O port cannot be mapped to I/O space bit 1: WC_ATTRIBUTE 1 = Attribute memory can be mapped to memory space. 0 = Attribute memory cannot be mapped to memory space. bit 0: WC_COMMON 1 = Common memory can be mapped to memory space. 0 = Common memory cannot be mapped to memory space. CX = Sockets bit 15: Socket 15 : bit 0: Socket 0 ES:DI = pBuffer (pointer to window function table) Explanation o Gets information about the functions of the specified window. Related INT 1Ah - Function 88h INT 1Ah - Function 89h INT 1Ah - Function 88h Classification PCMCIA Socket Service Name GetWindow Target PC card slot equipped machine + SSDRV.SYS Input AH=88h AL=Adapter (adapter number) BH=Window (window number on adapter) Output AH(CF)=Return code (see "Return code list") BL=Socket (socket number to which the specified window is assigned) CX=Size (I/O window is in 1 byte units, memory window is in 4K byte units) DH=State (current state of window hardware) bit 4: WS_CENABLE (when WS_IO and WS_EISA are set) 1 = Access to EISA common I/O space is enabled 0 = Access to EISA common I/O space is disabled bit 3: WS_PAGED■For memory window 1 = Window is divided into multiple 16KB pages 0 = Window is composed of a single page bit 3: WS_EISA■For I/O window 1 = Window is EISA I/O mapped 0 = Window is ISA I/O mapped bit 2: WS_16BIT 1 = Window data bus width is 16 bits 0 = Window data bus width is 8 bits bit 1: WS_ENABLED 1 = Window is enabled 0 = Window is disabled bit 0: WS_IO 1 = Window is mapped in I/O space 0 = Window is mapped in memory space DL=Speed DI=Base (current base address of specified window) (I/O window is in 1 byte units, memory window is in 4K byte units) Explanation o Gets the setting information of the specified window. Related INT 1Ah - Function 87h INT 1Ah - Function 89h INT 1Ah - Function 89h Classification PCMCIA Socket Service Name SetWindow Target PC card slot equipped machine + SSDRV.SYS Input AH=89h AL=Adapter (adapter number) BH=Window (window number on adapter) BL=Socket (socket number on adapter) CX=Size (I/O window is 1 byte unit, memory window is 4K byte unit) DH=State (window hardware setting) bit 4: WS_CENABLE (when WS_IO and WS_EISA are set) 1 = Access to EISA common I/O space is enabled 0 = Access to EISA common I/O space is disabled bit 3: WS_PAGED (memory window) 1 = Window is divided into multiple 16KB pages 0 = Window is composed of a single page bit 3: WS_EISA (I/O window) 1 = Window is EISA I/O mapped 0 = Window is ISA I/O mapped bit 2: WS_16BIT 1 = Window data bus width is 16 bits 0 = Window data bus width is 8 bits bit 1: WS_ENABLED 1 = Window is enabled 0 = Window is disabled bit 0: WS_IO 1 = Window is mapped in I/O space 0 = Window is mapped in memory space DL=Speed DI=Base (I/O window is 1 byte unit, memory window is 4K byte unit) Output AH(CF)=Return code (see "Return code list") Explanation o Sets the specified window. Related INT 1Ah - Function 87h INT 1Ah - Function 88h INT 1Ah - Function 8Ah Classification PCMCIA Socket Service Name GetPage Target PC card slot equipped machine + SSDRV.SYS Input AH=8Ah AL=Adapter (adapter number) BH=Window (window number on adapter) BL=Page (page number in window) Output AH(CF)=Return code (see "Return code list") BL=Socket (socket number on adapter) DL=State (state of specified page in window) bit 2: PS_WP 1 = Write prohibited by hardware 0 = Write not prohibited by hardware bit 1: PS_ENABLED 1 = Card is mapped to memory space or I/O space 0 = Page is disabled bit 0: PS_ATTRIBUTE 1 = Attribute memory is mapped 0 = Common memory is mapped DI=Offset (4KB unit) * PC card offset mapped by this page Explanation o Reads the configuration information for the specified page. Only valid for memory windows. Related INT 1Ah - Function 8Bh INT 1Ah - Function 8Ch INT 1Ah - Function 8Bh Classification PCMCIA Socket Service Name SetPage Target PC card slot equipped machine + SSDRV.SYS Input AH=8Bh AL=Adapter (adapter number) BH=Window (window number on adapter) BL=Page (page number in window) DL=State (state of specified page in window) bit 2: PS_WP 1 = Write prohibited by hardware 0 = Write not prohibited by hardware bit 1: PS_ENABLED 1 = Card is mapped to memory space or I/O space 0 = Page is disabled bit 0: PS_ATTRIBUTE 1 = Attribute memory is mapped 0 = Common memory is mapped DI=Offset (4KB unit) * Offset of PC card mapped by this page Output AH(CF)=Return code (see "Return code list") Explanation o Sets the specified page. Only valid for memory windows. Related INT 1Ah - Function 8Ah INT 1Ah - Function 8Ch INT 1Ah - Function 8Ch Classification PCMCIA Socket Service Name InquireSocket Target PC card slot equipped machine + SSDRV.SYS Input AH=8Ch AL=Adapter (adapter number) BL=Socket (socket number on adapter) ES:DI=pBuffer (pointer to socket function table) Output AH(CF)=return code (see "Return Code List") BH=SCIntMask bit 7: SBM_CD PC card CD signal bit 6: SBM_RDYBSY PC card RDY/BSY signal bit 5: SBM_BVD2 PC card BVD2 signal bit 4: SBM_BVD1 PC card BVD1 signal bit 3: SBM_INSERT Signal generated when the system requests the insertion of a PC card bit 2: SBM_EJECT Signal generated when the system requests the ejection of a PC card bit 1: SBM_LOCKED Signal generated when the system locks the PC card bit 0: SBM_WP PC card WP signal DH=SCRptCaps (same as SCIntCaps) DL=CtlInd bit 7: SBM_XIP Indicator that XIP application is processing bit 6: SBM_BUSY Indicator that PC card is being used/accessed bit 5: SBM_BATT Indicator that shows the status of BVD1 and BVD2 bit 4: SBM_LOCK Function to control the card lock mechanism bit 3: SBM_INSERT Motor control signal used when inserting a PC card with a motor bit 2: SBM_EJECT Motor control signal used when ejecting a PC card with a motor bit 1: SBM_LOCKED Signal generated when the system locks the PC card bit 0: SBM_WP PC card WP signal ES:DI=pBuffer(pointer to socket function table) Output AH(CF)=return code (see "Return Code List") Explanation o Gets information about the function of the specified socket. Related INT 1Ah - Function 8Ah INT 1Ah - Function 8Bh INT 1Ah - Function 8Dh Classification PCMCIA Socket Service Name GetSocket Target PC card slot equipped machine + SSDRV.SYS Input AH=8Dh AL=Adapter (adapter number) BL=Socket (socket number on adapter) Output AH(CF)=Return code (see "Return code list") BH=SCIntMask (mask state for status change events that occurred in the socket) bit 7: SBM_CD bit 6: SBM_RDYBSY bit 5: SBM_BVD2 bit 4: SBM_BVD1 bit 3: SBM_INSERT bit 2: SBM_EJECT bit 1: SBM_LOCKED bit 0: SBM_WP CH=Vcc voltage level bit 7-4: Reserved bit 3-0: Vcc voltage level CL=Vpp voltage level bit 7-4: Reserved bit 3-0: Vpp voltage level DH=State (same as SCIntMask) DL=CtlInd bit 7: SBM_XIP bit 6: SBM_BUSY bit 5: SBM_BATT bit 4: SBM_LOCK bit 3: SBM_INSERT bit 2: SBM_EJECT bit 1: SBM_LOCKED bit 0: SBM_WP DI bits 15-8=IFType bit 9,8: IF_IO,IF_MEMORY 11b=Disabled 10b=I/O interface 01b=Memory interface 00b=Disabled DI bits 7-0=IREQRouting bit 7: IRQ_ENABLED 1=Enabled 0=Disabled bit 6: IRQ_HIGH 1=Active HIGH 0=Active LOW bit 4-0: IRQ Level Explanation o Gets the status information of the specified socket. u In SSDRV.SYS (PCMCIA Socket Service 2.00 Driver Rev 1.00,1.01), the IFType and IREQRouting set in the DI register are the opposite of the JEIDA 4.1 specification (the upper byte is IREQRouting, the lower byte is IFType). Related INT 1Ah - Function 8Eh INT 1Ah - Function 8Fh INT 1Ah - Function 8Eh Classification PCMCIA Socket Service Name SetSocket Target PC card slot equipped machine + SSDRV.SYS Input AH=8Eh AL=Adapter (adapter number) BL=Socket (socket number on adapter) BH=SCIntMask (mask state for status change events that occur in the socket) bit 7: SBM_CD bit 6: SBM_RDYBSY bit 5: SBM_BVD2 bit 4: SBM_BVD1 bit 3: SBM_INSERT bit 2: SBM_EJECT bit 1: SBM_LOCKED bit 0: SBM_WP CH=Vcc voltage level bit 7-4: Reserved bit 3-0: Vcc voltage level CL=Vpp voltage level bit 7-4: Reserved bit 3-0: Vpp voltage level DH=State (same as SCIntMask) DL=CtlInd bit 7: SBM_XIP bit 6: SBM_BUSY bit 5: SBM_BATT bit 4: SBM_LOCK bit 3: SBM_INSERT bit 2: SBM_EJECT bit 1: SBM_LOCKED bit 0: SBM_WP DI bits 15-8=IFType bit 9,8: IF_IO,IF_MEMORY 11b=Disabled 10b=I/O interface 01b=Memory interface 00b=Disabled DI bits 7-0=IREQRouting bit 7: IRQ_ENABLED 1=Enabled 0=Disabled bit 6: IRQ_HIGH 1=Active HIGH 0=Active LOW bit 4-0: IRQ level Output AH(CF)=Return code (see "Return code list") Explanation o Sets the specified socket. u In SSDRV.SYS (PCMCIA Socket Service 2.00 Driver Rev 1.00,1.01), the IFType and IREQRouting set in the DI register are the opposite of the JEIDA 4.1 specification (higher byte is IREQRouting, lower byte is IFType). Related INT 1Ah - Function 8Dh INT 1Ah - Function 8Fh INT 1Ah - Function 8Fh Classification PCMCIA Socket Service Name GetStatus Target PC card slot equipped machine + SSDRV.SYS Input AH=8Fh AL=Adapter (adapter number) BL=Socket (socket number on adapter) Output AH(CF)=Return code (see "Return code list") BH=CardState bit 7: SBM_CD bit 6: SBM_RDYBSY bit 5: SBM_BVD2 bit 4: SBM_BVD1 bit 3: SBM_INSERT bit 2: SBM_EJECT bit 1: SBM_LOCKED bit 0: SBM_WP DH=SocketState (same as State in GetSocket) DL=CtlInd (same as CtlInd in GetSocket) bit 7: SBM_XIP bit 6: SBM_BUSY bit 5: SBM_BATT bit 4: SBM_LOCK bit 3: SBM_INSERT bit 2: SBM_EJECT bit 1: SBM_LOCKED bit 0: SBM_WP DI bits 15-8 = IFType bit 9: IF_IO bit 8: IF_MEMORY DI bits 7-0 = IREQRouting bit 7: IRQ_ENABLED 1 = Enable 0 = Disable bit 6: IRQ_HIGH 1 = Active HIGH 0 = Active LOW bit 4-0: IRQ level Explanation o Gets the current status of the socket, card, indicator, etc. u In SSDRV.SYS (PCMCIA Socket Service 2.00 Driver Rev 1.00, 1.01), the IFType and IREQRouting set in the DI register are the opposite of the JEIDA 4.1 specification (the upper byte is IREQRouting, and the lower byte is IFType). Related INT 1Ah - Function 8Dh INT 1Ah - Function 8Eh INT 1Ah - Function 90h Classification PCMCIA Socket Service Name ResetSocket Target PC card slot equipped machine + SSDRV.SYS Input AH=90h AL=Adapter (adapter number) BL=Socket (socket number on adapter) Output AH(CF)=return code (see "Return Code List") Explanation o Resets the PC card inserted in the specified socket. Related INT 1Ah - Function 91-94h Classification PCMCIA Socket Service Name Reserve Target PC card slot equipped machine + SSDRV.SYS Input AH=91-94h Output AH=15h(CF=1): BAD_FUNCTION Explanation o None Related INT 1Ah - Function 95-9Ch Classification PCMCIA Socket Service Name InquireEDC,GetEDC,SetEDC,StartEDC,PauseEDC,StopEDC,ReadEDC Target PC card slot equipped machine + SSDRV.SYS Input AH=95-9Ch Output AH=15h(CF=1): BAD_FUNCTION Explanation o No function. SSDRV.SYS does not support EDC related functions. Related INT 1Ah - Function 9Dh Classification PCMCIA Socket Service Name GetVendorInfo Target PC card slot equipped machine + SSDRV.SYS Input AH=9Dh AL=Adapter (adapter number) BL=Type ES:DI=pBuffer Output AH(CF)=Return code (see "Return code list") ES:DI=pBuffer DX=Release Explanation o Gets the vendor information of the socket service. Only 00h is defined for Type, and a character string indicating the vendor name is transferred to the address indicated by ES:DI. Related INT 1Ah - Function 9Eh Classification PCMCIA Socket Service Name AcknowledgeInterrupt Target PC card slot equipped machine + SSDRV.SYS Input AH=9Eh AL=Adapter (adapter number) Output AH(CF)=Return code (see "Return code list") CX=Sockets bit 15: Socket 15 : bit 0: Socket 0 Explanation o Returns a bitmap indicating the socket where the status change was detected Related INT 1Ah - Function 9Fh Classification PCMCIA Socket Service Name GetSetPriorHandler Target PC card slot equipped machine + SSDRV.SYS Input AH=9Eh AL=Adapter (adapter number) BL=Mode (mode) 00h= Set 01h= Get CX:DX= pHandler Output AH(CF)=Return code (see "Return code list") CX:DX= pHandler Explanation o Sets the handler to replace the socket service. INT 1Ah - Function A0h, A1h Classification PCMCIA Socket Service Name GetSetSSAddr, GetAccessOffsets Target PC card slot equipped machine + SSDRV.SYS Input AH=A0h, A1h Output AH=15h(CF=1): BAD_FUNCTION Explanation o No function. Not supported by SSDRV.SYS. INT 1Ah - Function A2~ADh Classification PCMCIA Socket Service Name Reserve Target PC card slot equipped machine + SSDRV.SYS Input AH=A2~ADh Output AH=15h(CF=1): BAD_FUNCTION Explanation o None Related INT 1Ah - Function AEh Classification PCMCIA Socket Service Name VendorSpecific Target PC card slot equipped machine + SSDRV.SYS Input AH=AEh Output AH=15h(CF=1): BAD_FUNCTION Explanation o No function. Not supported by SSDRV.SYS. Related INT 1Ah - Function AFh Classification PCMCIA Socket Service Name CardService Target PC card slot equipped machine + SSDRV.SYS Input AH=AFh Output AH=15h(CF=1): BAD_FUNCTION Explanation o Card service driver is not provided for PC-9800. Related